using System.Collections;
using TMPro;
using UnityEngine;

// 随从(小兵/召唤物)类
public class Minion : MonoBehaviour
{
    private int attack;  // 攻击力
    [SerializeField] private TextMeshPro attackText; // 攻击力显示文本

    void OnEnable()
    {
        // 订阅受到伤害后的反应（在伤害计算完成后触发）
        ActionSystem.SubscribeReaction<DealDamageGA>(DealDamageReaction, ReactionTiming.POST);
    }

    void OnDisable()
    {
        // 取消订阅
        ActionSystem.UnsubscribeReaction<DealDamageGA>(DealDamageReaction, ReactionTiming.POST);
    }

    // 受到伤害后的反应逻辑：将伤害值转化为属性提升
    private void DealDamageReaction(DealDamageGA dealDamageGA)
    {
        // 创建一个增加属性的动作（攻击力和生命值各增加伤害值量）
        IncreaseStatsGA increaseStatsGA = new(this, dealDamageGA.Amount, dealDamageGA.Amount);
        ActionSystem.Instance.AddReaction(increaseStatsGA);
    }

    // 增加攻击力和生命值的协程方法 
    public IEnumerator IncreaseAttackAndHealth(int attack)
    {
        this.attack += attack;  // 提升攻击力
        attackText.text = this.attack.ToString(); // 更新UI显示

        // 可以在这里添加属性变化的动画效果
        yield return null;
    }
}

